/*
 * @Descripttion: 多平台pages配置
 * @version: 
 * @Author: Qf
 * @Date: 2023-11-22 09:42:52
 * @LastEditTime: 2025-11-06 09:43:00
 * @LastEditors: Qf
 */

const path = require('path')
const _ = require('lodash')

// 获取platform mp-weixin, mp-toutiao, h5等
let platform = process.env.UNI_PLATFORM
platform = platform.replace(/mp-/g, '')

// console.log('当前编译平台:', platform)

// 动态加载平台配置文件
const routerFilePath = path.join(__dirname, `router/${platform}.js`)

let platformPageConfig = {}
try {
  platformPageConfig = require(routerFilePath)
  // console.log(`成功加载平台配置: ${platform}`)
} catch (error) {
  console.warn(`未找到平台配置文件: ${routerFilePath}，使用默认配置`)
  platformPageConfig = { pages: [] }
}

// 自定义合并策略：数组合并而不是替换
function customizer(objValue, srcValue) {
  if (_.isArray(objValue)) {
    return objValue.concat(srcValue);
  }
}

// pagesJson参数是pages.json的内容
module.exports = (pagesJson, loader) => {
  // 开发模式下才需要热重载
  if (['test', 'development'].includes(process.env.NODE_ENV)) {
    console.warn(`当前环境: ${process.env.NODE_ENV}`)
    try {
      // 动态添加依赖，告诉webpack该文件需要热重载
      loader.addDependency(require.resolve(routerFilePath))
      // 手动清除缓存
      delete require.cache[require.resolve(routerFilePath)]
    } catch (error) {
      console.warn('热重载配置失败:', error.message)
    }
  }
  
  // 合并pages.json和平台特定配置
  let mergedPages = _.mergeWith({}, pagesJson, platformPageConfig, customizer)
  
  // 抖音小程序特殊处理：将首页改为 pages/home/index，移除 tabBar
  if (platform === 'toutiao') {
    // console.log('抖音小程序：使用 pages/home/index 作为首页，移除 tabBar')
    // 确保 pages/home/index 在第一位
    mergedPages.pages = mergedPages.pages.filter(page => page.path !== 'pages/home/index')
    mergedPages.pages.unshift({
      path: 'pages/home/index',
      style: {
        navigationBarTitleText: '出手鸭报价单'
      }
    })
    // 移除 tabBar 配置
    delete mergedPages.tabBar
  }
  
  // console.log('合并后的pages配置:', JSON.stringify(mergedPages.pages.slice(0, 3), null, 2))
  
  return mergedPages
}
